Delivery of internet ads

ABSTRACT

Delivering advertisements via the Internet may include extracting an index file, including a bid price, and a table of contents pointing to a start location of the keyword in the index file. Keywords in the query string may be matched to advertisements by searching the table of contents to locate the start location of that keyword in the index and matching that keyword to index file entries until a next indexed keyword is encountered. Advertisements may be matched based on an estimated yield and priced a price lower than the bid price that retains the ranking. A search result set including a link to the highest ranked advertisements may be used to respond to the query string. Each entry in the index file may include a set of preselected keywords, a text copy of the advertisement, a negative keyword to prevent a matching and/or click through rates.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 11/535,914 filed Sep. 27, 2006 which claims the benefit of U.S. provisional application Ser. No. 60/723,812 filed Oct. 5, 2005 and Ser. No. 60/721,311 filed Sep. 27, 2005.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention is related to ad delivery systems for placing Internet advertising in response to queries from search engine sites.

2. Description of the Prior Art

Conventional ad delivery systems have had problems, for example, with slow response, pricing which discouraged higher bids and limited matching. What is needed is an improved ad delivery system which avoids or reduces the problems inherent in known systems.

SUMMARY OF THE DISCLOSURE

In a first aspect, a method for delivering advertisements via the Internet may include extracting, from a database of advertisements, an index file alphabetized by keyword, each entry in the index file including a bid price for placement of the related advertisement, extracting a table of contents of the index file, each entry in the table of contents for a keyword pointing to a start location of a first entry related to that keyword in the index file, matching a keyword in a query string to advertisements in the database by searching the table of contents to locate the start location of that keyword in the index and matching that keyword to index file entries until a next indexed keyword is encountered, ranking advertisements matching the keyword at least in part on an estimated yield for each such advertisement, pricing the highest ranked advertisement at a price lower than the bid price for that advertisement that retains the ranking for that advertisement for that keyword and responding to the query string with a search result set including a link to the highest ranked advertisement for the keyword.

Each entry in the index file may include selected text related to the advertisement. Matching may include matching at least a portion of a multiple keyword phrase in the query string to the selected text and/or matching a keyword in the query string to the selected text. Each entry may also include a selected type of matching algorithm and matching may include matching a keyword in the query string to the selected text if a first type of matching algorithm is selected and/or matching at least a portion of a multiword keyword phrase in the query string to the selected text if a second, broader type of matching algorithm is selected. Each entry in the index file may also include one or more negative keywords. Matching may include matching any of the one or more negative keywords if present in the index file entry with another keyword in the query string to prevent a match of the keyword in that query string with that index file entry. Each entry in the index file may also include click through rate data for each advertisement. Ranking may include determining a product of the bid price and click through rate data for each matching entry and determining the estimated yield as a product of the bid price and the click through rate data for each such matching entry.

Further, the search result set may include links to a plurality of other ranked advertisements for the keyword. Each entry in the index file may include a URL linking to the advertisement used a link in the result set to that advertisement. The search result set may be filtered to remove links to entries, based on the URL and/or based on a domain associated with the query string and/or to links to entries having bid prices and/or click through rates below predetermined minimums, before responding.

Further, the index and table of content files may be rebuilt on a daily basis during time periods of relatively low usage and/or may be updated more frequently than the index and table of content files are rebuilt. The index and table of content files may be incrementally updated by adding data to the index and table of contents and marking entries in the TOC for deletion. The table of contents may be stored in RAM. A database of advertisements and click through rates, for each advertisement in the database, may be maintained from which the index file and table of contents may be extracted.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram overview of an advertisement delivery system.

FIG. 2 is a block diagram of an alternate, more detailed embodiment of an ad delivery system.

FIG. 3 is a flow chart of a normalizing engine.

DETAILED DISCLOSURE OF THE PREFERRED EMBODIMENT(S)

An ad delivery system may include a database of ads and an ad delivery engine which may include an extraction engine to extract the ads into an index data file, and a table of contents or TOC, may match the ads to a query string from a search engine site using different matching criteria while excluding some otherwise matching ads, may rank the matched ads based on a potential yield such as maximum bid or cost per click, adjusted for example by an actual or observed click-thru rate, may price the ads on a different basis than ranking, for example, by discounting the ranking basis to the minimum price which preserves the ranking, and/or may filter the ads based on predetermined criteria.

The extraction engine may provide a full rebuild of the index, and TOC, on a periodic basis such as once per day, while providing an update, by indexing only data new since the last full rebuild, on a more frequent basis. The TOC may be saved in a relatively fast memory, such as RAM memory, while the index because of its size may be saved in a relatively slower memory such as on disk. The TOC, which is alphabetized in accordance with keywords, may contain a pointer to the location of the first byte related to each set of alphabetized keywords, to reduce the time required to search through the entries in the index for each group of keyword entries. The terms “keyword” or “keywords” are used herein to denote both one or more individual keywords, one or more key phrases, or groups of words, and combinations of one or more keywords with one or more key phrases.

Referring now to FIG. 1, system 10 for high-performance delivery of Internet advertisements is disclosed which may include an incrementally updated engine 12 for extracting, indexing, matching, ranking, pricing, and filtering advertisements. Engine 12 may operate by extracting advertisements from ad database 14 and building an index and/or a table of contents (or TOC) for the index. This index can be periodically rebuilt, and may also be incrementally updated between rebuilds. A TOC for the index may also be rebuilt each time and includes a pointer to the location in the index. The index is preferably alphabetized based on keywords so that all ads related to a specific keyword may be found beginning at a particular start location in the index. The TOC, if built, would then also be alphabetized by keyword and provide the start location in the index for all entries associated with a particular keyword or key phrase.

While in operation, query handler 16 receives a query from an Internet website such as Partner Site 16 and returns a list of advertisements. The query is keyword matched to advertisements by one of multiple selected matching algorithms. Matching advertisements may then be rank ordered by yield, e.g. financial yield. Prices may then be set for placement of each matching advertisement. Some advertisements may be filtered out of the result set. Ultimately, Delivery engine 12 returns a result set or list for the query, each entry of which may include a) creative material such as the content of the ad, b) price information, and c) one or more URL (or uniform resource locators) for each advertisement.

The operation of delivery engine 12 can be subdivided into five elements: (1) indexing, (2) matching, (3) ranking, (4) pricing, and (5) filtering.

Delivery engine 12 makes use of a technique called normalization. A text sample has been normalized if it has been stemmed, stopped, and sorted. Stemming refers to reducing the word or phrase to its stem (thus plurals become singular, for example). “Stop” words (i.e., words that have been identified to be detrimental to relevance because they are grammatical indicators or otherwise excessively common or inappropriate) are then removed. Finally, multiple word and phrase elements are sorted alphabetically.

-   -   (1) Indexing. In order to build its index, delivery engine 12         may take a complete extract of advertisements from advertisement         database 14, which preferably may be a relational database. The         extract preferably includes entries for ads in the form of         creative material, advertiser web site URL, one or more         keywords, MaxCPC, observed click-through rate, choice of         matching algorithm, and one or more of various advertisement         options. MaxCPC may be the maximum cost-per-click price that the         advertiser is willing to pay for each placement of the ad.         Advertisement database 14 may have been populated through some         source of advertisements, such as ad purchasing system 20, in         which potential advertisers may purchase advertisements, that         is, purchase placement of their advertisements.

Delivery engine 12 reads advertisement data extracted from database 14 and saves it in an ad data file or index. It may also save several fields of each record in the extract to a TOC (table of contents) file. These fields may include each keyword, the byte location of the start of its record in the ad data or index file, pricing fields, and filtering fields. Incremental updates may occur on a periodic batch basis; inserts, updates and deletes may be processed by adding new data to the ad data file (e.g. inserts and updates) and by marking items in the TOC File (e.g. deletes).

-   -   (2) Matching. Delivery engine 12 can match queries from query         handler 16 to advertisements using one or more matching         algorithms such as the SmartMatch or BroadMatch algorithm         described below. A query consists of a query string of one or         more words, as well as flags indicating the source of the query,         such as partner site 18. Partner site 18 may have a distribution         arrangement with the proprietor of delivery engine 12 and may         receive search requests from its clients which it forwards to         sources of search results such as delivery engine 12. The query         string may also include other details of the original request         made to partner site 18. Delivery engine 12 constructs a result         set of matching advertisements, and or other query results,         which are then provided to Query Handler 16 for use by partner         site 18 in responding to search requests made to site 18 by its         clients.         -   a. A so-called SmartMatch algorithm may be applied to             keywords that have been normalized at purchase time, that             is, when the advertising placement was purchased through ad             purchasing system 20. At query time, that is when a query is             processed by query handler 16, the query may be normalized             using identical rules to the rules used at purchase time.             Exact matches between query and keywords are considered             positive matches by the SmartMatch algorithm. In other             words, an ad purchaser may be able to select the words in a             query which cause the ad to be selected or matched.         -   b. A so-called BroadMatch algorithm matches for all keywords             associated with the ad that are contained within the query.             Thus, an advertisement associated with keyword “red bull”             would be a positive match using the BroadMatch algorithm             with a query of “red bull drink”. Advertisers may also             specify negative keywords when using the BroadMatch option.             “Negative keywords” are text strings which cause the match             to fail when they are found in the query string, even if             there is otherwise a match. Thus, an advertisement             associated with keyword “red bull” could specify “soda” as a             negative keyword so that the BroadMatch algorithm would not             indicate a match with a query which included the phrase “red             bull soda”. Matches are found by extracting known phrases             from the normalized query. Each known phrase may be             associated with one or more advertisements in the TOC File.             All associated advertisements may be combined into one             result set. Only the longest phrases may be considered             because advertisements associated with sub phrases may             already be combined into the longest phrases in the TOC             File.     -   (3) Rank ordering. Delivery engine 12 may rank advertisements         associated with keywords which have been matched to the incoming         query from query handler 16. The rank ordering in the result set         may be determined by the actual or projected yield to the         proprietor of delivery engine 12. “Yield” in the system 10 may         be defined as the product of the click-through rate with MaxCPC,         that is, yield may be based on the amount of money to be paid by         the advertiser for placement of an ad. The MaxCPC may be set by         the advertiser at purchase time, e.g. in whatever ad purchasing         system 20 which populates the advertisement database 14. The         click-through rate may be determined by click tracking system         13, which may also perform web advertisement click-through and         redirect operations, and which may update advertisement database         14 with such information for each advertisement.     -   (4) Pricing. Delivery engine 12 may set the price paid by each         purchaser of ad space for space allotted to each advertisement         in the result set. Prices may be limited to not exceed the         MaxCPC. Prices may be discounted to the lowest price necessary         to provide the optimal placement of the advertisement, e.g. the         lowest price at which an ad may be placed without changing its         ranking relative to other ads matching the same keywords. Ad         placement may be subject to reserve prices (minimum or maximum         price for certain keywords and/or distribution partners, such as         partner site 16) and may then be eliminated from the result set         if they do not meet the reserve. Under some circumstances, there         may be additional discounts which are applied to prices before         the result set is returned.     -   (5) Filtering. Advertisements in the result set may be filtered         out, or otherwise treated specially, on the basis of a number of         criteria, including minimum click-through rate, minimum price,         advertiser's domain, or domain of the referring site.

Referring now to FIG. 2, in a preferred embodiment, a potential ad purchaser such as advertiser 24, may purchase placements for its advertisements for products or services from ad purchasing system 26. The advertisements may be retrievable from a specific URL, such as advertiser's web site 25. Ad purchasing system 26, and/or reporting system 28, stores data or causes data to be stored related to the advertisement purchase and estimated or actual click-through rates determined thereafter, in one or more related databases such as database of ads and click thru rates 30. Database 30 is typically a relational database of advertisements with fields for data in the form of creative material, such as the advertisement content at a specific URL, a reference to a related URL e.g. for advertiser's web site 25, one or more keywords or key phrases (hereinafter “keywords”) related to the content of the ad, the purchaser's bid such as the maximum cost per click (MaxCPC) that ad purchaser is willing to pay for placement of the associated advertisement, an estimated or other click-through rate (preferably an observed click-thru rate after the advertisement has been purchased and distributed), the purchaser's choice of matching algorithm, and one or more various other advertisement options.

In operation, search engine user 32 may be connected to search engine site 34 (e.g. partner site 18 shown in FIG. 1) requesting a search, such as a search for “car washes”. Search engine site 34 may contact query handler 36 (as well as other ad delivery system query inputs) to determine if search results can be provided. In response, query handler 36 provides a query string to ad delivery engine 38 which obtains a filtered and ranked list of matching advertisements based on data in database 30 and returns that list to search engine site 34. Search engine site 34 may combine the returned list with other lists of search results and deliver the combined list as search results to search engine user 32.

User 32 may select, or click on, one of the entries in the list provided in response to the search user's search request and be transparently redirected to another site, such as redirect site 37, which directs user 32 to advertiser's web site 25.

Reporting system 28, or a similar mechanism for example associated with redirect site 37, may then detect the selection made by user 32 when user 32 clicks on the particular advertisement on the list of search results provided to user 32, or at least on the portion of that list provided via ad delivery engine 38, and records that action, e.g. for example as a click for which advertiser 24 will be charged and/or to determine a click through rate e.g. the percentage of the time that the specific URL is selected by a user when listed in the search results. Reporting system 28, or a similar mechanism, may then causes the click through rate to be stored in database 30 and associated therein with the advertisement to which it is related.

In operation, extraction engine 39 in ad delivery engine 38 may extract information from database 30 to fully and/or incrementally rebuild index 40 and TOC 42.

Preferably, extraction engine 39 performs full rebuilds of index 40 and/or TOC 42 on a regular basis, such as once per day. A full rebuild of index 40 may require a substantial amount of time to extract the data related to each advertisement in database 30 and therefore such rebuilds are typically done during time periods of relatively low usage, for example at midnight each day. Index 40 may be a simple, but potentially large data file but is, of course, much smaller than ad database 30. Index file 40 may be stored on disk, or other relatively slow memory compared to memory on which TOC 42 may be stored, because of its size.

Index 40 is preferably alphabetized in accordance with its keywords. For example, if one of the keywords for advertiser 24 is “car wash”, data related to the ad for advertiser 24 would be stored alphabetically in index 40 based on the keyword phrase “car wash”. If “car wash” is also a keyword phrase for another advertiser, the data for that other advertiser would preferably be stored in index 40 adjacent to the data for all other ads having the same keyword, such as the ad for advertiser 24. The benefit of this simple, alphabetized storage approach will be more apparent from the description below of index 40 and/or TOC 42.

A subset of the data stored in index 40 may also be stored in TOC 42, preferably including data related to the keywords, pricing, filtering fields (described below in greater detail) and observed click-through rates for each advertisement as well as a pointer to the location of that data in index 40. The pointer is preferably related to the location of first byte (or start byte) of data for the first stored advertisement data for the associated keyword or phrase stored in index 40. That is, the pointer in TOC 42, for the data related to all advertisements for which “car wash” is a keyword, would point to the start byte location in index 40 for the first listed advertisement for which “car wash” is a keyword. Thus, some data for all advertisements for which “car wash” is a keyword in index 40 can easily, and quickly, be found by TOC 42 by starting at the start byte location for the first listed advertisement for that keyword in index 40 and processing the data found thereafter until a new keyword is found. Thus, the ranking of all ads related to each particular keyword may easily be accomplished at one time because all such ads are listed together in index 40 which includes the location of each such ad in full ad database 30.

In addition, incremental updates may also be performed on a periodic basis more often than the full rebuilds of index 40. For example, if the full rebuilds of index 40 and/or TOC 42 are performed daily at midnight, incremental rebuilds may be done on an hourly basis during the day. As a result of an incremental update, inserts, updates and deletes may be processed by adding new data to index 40 and TOC 42 for inserts and updates and by marking items in the TOC File for deletions.

One of the reasons for combining both full and incremental rebuilds and updates is that reliance on full rebuilds would limit the accuracy of index 40 and TOC 42 with regard to the then current state of database 30 and/or require more time for response to a query.

Reliance on a repetitively updated, but not often rebuilt, index 40 and TOC 42 may also limit the accuracy of index 40 and TOC 42 because an error, once it occurs, would be difficult or impossible to correct.

Preferably, TOC 42 may be used to provide faster access to index 40 and would therefore typically be stored in a faster memory, such as RAM, to speed up the processing by ad delivery system 38. In particular, locating the address of the first or start byte in index 40 for all entries for a particular keyword or phrase by searching in TOC 42 in RAM may be a very quick and time efficient process. By also storing some additional specific data in RAM TOC 42 for each advertisement, such as pricing or filtering data, the processing time requirements of other aspects of ad delivery engine 38 including ranking engine 54, pricing engine 56 and filter 58, may also be optimized. The processing time for matching engine 52, in addition to the preferably optimized time for locating the starting byte in index 40 for all entries for a particular keyword or phrase which are stored adjacent to each other, remains dependent on the speed of the memory in which index 40 is stored, for example, on a hard disk or other memory typically relatively slower than RAM.

Referring now also to FIG. 3, in normalizing engine 44, stem processor 46 reduces each word or phrase to its stem e.g. “car washes” becomes “car wash”. Thereafter, stop processor 48 removes words that have previously been identified to be detrimental to relevance such as excessively common words including “the”, “an” etc. as well as inappropriate words and/or grammatical indicators. Thereafter, multiple word and phrase elements are sorted alphabetically in sorter 50. The text input to normalizing engine 44 may be advertising content, and/or separately identified keywords and phrases, in database 30 and the normalized text may be applied to index 40 and/or TOC 42.

Similarly, the text applied to normalizing engine 44 may be a query string from query handler 36 and the normalized text may be applied to matching processor 52. A query consists of a query string of one or more words, as well as flags preferably indicating the distribution partner and other details of the original request.

Referring now again to FIG. 2, matching engine 52 may be used to construct a set of matching advertisements in database 30 in response to a query from query handler 36 in more than one way. In one embodiment, keywords normalized at the time of purchase by advertiser 24 may be matched to determine exact matches with normalized text from the query processed by query handler 36. In a preferred embodiment, both the advertisement keywords and the query string are normalized using the identical words to produce positive matches in processor.

Alternately, all keywords in the advertisement which are fully contained within the query may produce positive matches in matching engine 52 in order to produce a larger set of matching advertisements. Thus, using the broader matching approach, an advertisement associated with keyword “red bull” would be a positive match with a query for “red bull drink”. Advertiser 24 may indicate at the time of purchase which matching engine approach is to be used and that selection may be stored in database 30 and/or in index 40 or TOC 42.

Advertiser 24 may also specify negative keywords for use when using this broader approach in matching engine 52 in order to cause matches to fail. Negative keywords may be text strings, for example, which cause a match to fail when they are found in the query string, even if there would otherwise a match. For example, an advertiser using “Red Bull” as a keyword for drink product may specify a negative keyword of “dart boards” if “Red Bull” happens to also be a brand of dart boards and the advertiser does not want his advertisements to be delivered with search results for searches for “Red Bull Dart Boards”.

Each known phrase may be associated with one or more advertisements in the TOC File. All associated advertisements may be combined into one result set. Only the longest phrases may be considered because advertisements associated with sub phrases may already be combined into the longest phrases in the TOC File. The output of matching engine 52 may be considered a result set of matching advertisements.

Ranking engine 54 ranks the advertisements in the result set from matching engine 52 in an order related to the potential monetary yield to the service from whom the advertisement was purchased, typically the operator of ad purchasing system 26. The potential yield may be calculated as a function of the bid by advertiser 24 and the actual or estimated success of the advertisement in attracting users, such as user 32, when listed in the results provided by search engine site 34.

For the purposes of calculating the potential yield, the bid may preferably be in the form of the maximum cost per click (MaxCPC). MaxCPC may be considered to be a bid from advertiser 24 for the highest cost per click advertiser 24 has agreed to pay for placement of the advertisement for advertiser's web site 25. The advertisement's success in achieving placement for its adds may preferably be monitored in the form of an observed (or estimated or otherwise calculated) click-through rate which may be provided by reporting system 28 as determined for example from redirect site 37, as described in more detail below, or other systems performing related functions. Data related to the bid, or MaxCPC, and success, or click-through rate may conveniently be stored in database 30. The output of ranking engine 54 may be considered to be a result set of ranked, matching advertisements.

Pricing engine 56 operates on this result set to determine a price, that is, a price to be paid by a purchaser, such as advertiser 24, of each of the ranked and matched advertisements (such as the advertisement for advertiser's web site 25) in the result set from ranking engine 54 when that advertisement is selected for viewing by user 32. It is important to note that the price charged for placement of each advertisement may be below or up to the bid or MaxCPC set by advertiser 24 when the bid was placed or when later updated.

Advertisements may also be subject to reserve prices (minimum or maximum prices for certain keywords and/or for distribution partners) and may be eliminated from the result set if they do not meet such reserve prices. Under some circumstances there may be additional discounts which are applied to prices before the result set is returned.

Filter 58 may operate on the result set from pricing engine 56 to filter out advertisements on the basis of a number of criteria, such as a minimum click-through rate which may be set by ad purchasing system 26 or by search engine site 34, a minimum price, the Internet domain of advertiser 24, or the domain of a referring site which may have referred advertiser 24 to ad purchasing system 26.

As an example of the operation of system 10, ad purchaser or advertiser 24 may be a business, such as Pete's Car Wash, which has created a web site 25 on which an advertisement for its car wash business is located. In order to promote its business, Pete's Car Wash contracts with ad purchasing system 26 to have web site 25 included in result sets provided to search engine users, such as user 32, from a search engine site such as site 34, when the words “car wash” are included in the search request e.g. the query string.

Search engine sites are web sites presenting one or more search features to their users. One of the ways these sites generate revenue is by displaying advertising as part of search results. Search engine sites, such as site 34, may have a relationship with one or more partner sites having ad delivery engines, such as ad delivery engine 38, via query handlers such as handler 36, to provide a ranked set of matching advertisements in response to a search engine user's search request forwarded by site 34. In this example, in response to a request from search engine site 34 for search results related to the keywords “car wash”, query handler 36 may provide a ranked set of advertisements related to car wash to search engine site 34 in the form of a set of redireaction operations, for example to redirect site 37.

Each entry in this ranked set of matching advertisements may be selected by user 32 by clicking on that entry which may cause user 32 to be transparently sent to redirect site 37 which again redirects user 32, for example, to advertiser's web site 25. Redirect site 37 may also send data to reporting system 28, which may be part of redirect site 37, ad purchasing system 26 or otherwise be related to them, indicating which advertisements in data base 30 are displayed to user 32 and which, such as advertiser's web site 25, were selected by user 32 clicking so that an observed click-thru rate may be determined and entered into database 30 and/or advertiser 24 may be billed for the actual click through to his site.

After operation of matching engine 52, ranking engine 54 serves to rank or order the matching advertisements in accordance with the bid or MaxCPC arrangement between Pete's Car Wash and ad purchasing system 26. Advertiser 24 is not necessarily, however, required to pay the maximum cost per click rate originally bid.

In a preferred embodiment, Pete's Car Wash is ranked in accordance with the bid MaxCPC (adjusted for the observed click-through rate) but only required to pay just enough to get ranked above the nearest competitor's bid. This approach motivates advertisers, such as Pete's Car Wash, to bid a higher MaxCPC because that highest rate will only be charged if necessary to achieve a higher rank or order in the search results presented to user 32.

In pricing engine 56, pricing may be based on a discounted yield rank. Rank, as noted above, is based on potential financial yield to the operator of ad purchasing system 26. Pricing engine 56, however, may set actual pricing so that advertiser 24 is only required to pay the cost per click rate necessary to maintain the ranking of its ad determined by ranking engine 54.

In one example, Pete's maximum bid or MaxCPC may be $0.40 per click while his estimated or observed click-through rate may be 2%. Similarly, one of Pete's competitors for ranking, George, may have a maximum bid or MaxCPC of $0.50 per click but a click-through rate of only 1%. In conventional ad delivery systems, George may have been ranked higher in order over Pete because George's maximum bid is greater than Pete's. In a preferred embodiment as described above, ranking engine 54 may rank Pete's higher than George in the results list because Pete's potential yield is 0.40*0.02=0.08 while George's potential yield is only 0.50*0.01=0.05.

However, pricing engine 56 may operate to discount Pete's potential yield, even though the potential yield was used in determining Pete's rank, to determine the price that Pete's is required to pay for actual click-through selections by users. In the above example, the potential yield may be discounted to be just above the potential yield of Pete's competitor for ranking. Pete's may only be charged, for example by reporting system 28 or some other convenient system, $0.051 per click, that is, just enough to get ranked above the first lower ranked competitor, George, whose potential yield was $0.05 per click. 

1. A method for delivering advertisements via the Internet, comprising: (a) extracting, from a database of advertisements, an index file alphabetized by keyword, each entry in the index file including a bid price for placement of the related advertisement; (b) extracting a table of contents of the index file, each entry in the table of contents for a keyword pointing to a start location of a first entry related to that keyword in the index file; (c) matching a keyword in a query string to advertisements in the database by searching the table of contents to locate the start location of that keyword in the index and matching that keyword to index file entries until a next indexed keyword is encountered; (d) ranking advertisements matching the keyword at least in part on an estimated yield for each such advertisement; (e) pricing the highest ranked advertisement at a price lower than the bid price for that advertisement that retains the ranking for that advertisement for that keyword; and (f) responding to the query string with a search result which contains a link to the highest ranked advertisement for the keyword.
 2. The method of 1 wherein each entry in the index file includes selected text related to the advertisement and matching further comprises: (g) matching at least a portion of a multiple keyword phrase in the query string to the selected text.
 3. The method of claim 1 wherein each entry in the index file includes selected text related to the advertisement and matching further comprises: (h) matching a keyword in the query string to the selected text.
 4. The method of claim 1 wherein each entry in the index file includes selected text associated with the advertisement and a selected type of matching algorithm, and matching further comprises: (i) matching a keyword in the query string to the selected text if a first type of matching algorithm is selected; and (j) matching at least a portion of a multiword keyword phrase in the query string to the selected text if a second, broader type of matching algorithm is selected.
 5. The method of claim 1 wherein each entry in the index file may include one or more negative keywords and matching further comprises: (k) matching any of the one or more negative keywords if present in the index file entry with another keyword in the query string to prevent a match of the keyword in that query string with that index file entry.
 6. The method of claim 1 wherein each entry in the index file includes click through rate data for each advertisement and ranking further comprises: (l) determining a product of the bid price and click through rate data for each matching entry; and (m) determining the estimated yield as a product of the bid price and the click through rate data for each such matching entry.
 7. The method of claim 1 wherein the search result set includes: (n) links to a plurality of the other ranked advertisements for the keyword.
 8. The method of claim 1 wherein each entry in the index file includes a URL linking to the advertisement and including a link to the highest ranked advertisement further comprises: (o) including the URL in the index file entry to the highest ranked advertisement.
 9. The method of claim 1 further comprising: (p) filtering the search result set to remove links to entries based on the URL.
 10. The method of claim 1 further comprising: (q) filtering the search result set to remove links to entries based on a domain associated with the query string.
 11. The method of claim 1 further comprising: (r) filtering the search result set to remove links to entries having click through rates below a predetermined minimum before responding.
 12. The method of claim 1 further comprising: (s) filtering the search result set to remove links to entries having bid prices below a predetermined minimum before responding.
 13. The method of claim 1 further comprising: (t) rebuilding the index and table of content files on a daily basis during time periods of relatively low usage.
 14. The method of claim 13 further comprising: (u) updating the index and table of content files more frequently than rebuilding the index and table of content files.
 15. The method of claim 14 wherein updating further comprises: (v) incrementally updating the index and table of content files by adding data to the index and table of contents and marking entries in the table of content files for deletion.
 16. The method of claim 15 further comprising: (w) storing the table of contents in RAM memory.
 17. The method of claim 1 further comprising: (x) storing the table of contents in RAM memory.
 18. The method of claim 1 further comprising: (y) maintaining a database of advertisements and click through rates, for each advertisement in the database, from which the index file and table of contents may be extracted. 